python面向对象(零)

python中万物皆对象。数据类型是对象,函数是对象,模块也是对象。

python所有的类都继承自最基础类object

python中数据类型的操作功能都是类方法的体现

OOP编程理念

object oriented programming
把对象当作程序的基本单元,对象包括数据和操作数据的函数

本质是把问题解决抽象为以对象为中心的计算机程序

重点在于高抽象的复用代码

可以提高协作产量

面向过程VS面向对象

面向过程:以解决问题的过程步骤为核心编写程序

面向对象:以问题对象构建和交互为核心编写程序

面向对象三个特征

  • 封装 (Encapsulation)

    属性和方法的抽象,用数据和操作数据的方法来形成对象逻辑

    属性的抽象:对类的属性进行定义、隔离及保护

    方法的抽象:对类的方法进行定义、隔离及保护

    目标是形成一个类对外可操作属性和方法的接口

  • 继承 (Inheritance)

    代码复用的高级抽象,用对象之间的继承关系来形成代码复用

    实现了以类为单位的高抽象级别代码复用

    继承是字类几乎完全使用原有类属性与方法的过程

  • 多态 (Polymorphism)(存疑)

    方法灵活性的抽象,让对象的操作更加灵活,更多复用代码

    参数类型的多态:一个方法能处理多个类型的能力

    参数形式的多态:一个方法能接受多个参数的能力

    多态是OOP的一个传统概念,python天然支持多态,不需要特殊语法

面向对象术语

  • class

    逻辑抽象和产生对象的模板,一组变量和函数的特定组合

  • 对象 object

    独立的存在 或 作为目标的事物
    独立性:对象都存在清晰的边界
    功能性:对象都能表现出一些功能、操作或行为
    交互性:对象之间存在交互,如运算和继承

    对象分为类对象class object和实例对象 instance object

    类对象是维护每个python类基本信息的数据结构,全局只有一个

    实例对象是python类实例化后产生的对象,简称’对象‘。实例对象可以生成多个

  • 属性

    存储数据的‘变量’

    包括类属性实例属性

  • 方法

    操作数据的‘函数’

    包括 类方法实例方法自由方法静态方法保留方法

  • 实例化

    从类到对象的过程,所有”对象”都源于某个“类”

  • 继承相关:基类、派生类、字类、父类、超类,重写

  • 命名空间:程序元素作用域的表达

  • 构造和析构:生成对象和删除对象的过程